﻿using Management.Auxiliary;
using System.Linq;
using LinqKit;

namespace Management.Core.Workshop
{
    public class WorkshopManager:BaseManager<Workshop>
    {
        public Paging<Workshop> FindPageList(Paging<Workshop> pagingWorkshop, int? workshopID, string name, int? order)
        {
            //查询表达式
            var _where = PredicateBuilder.New<Workshop>(true);
            if (workshopID != null && workshopID > 0) _where = _where.And(u => u.WorkshopID == workshopID);
            if (!string.IsNullOrEmpty(name)) _where = _where.And(u => u.Name.Contains(name));
            //排序
            OrderParam _orderParam;
            switch (order)
            {
                case 0://ID升序
                    _orderParam = new OrderParam() { PropertyName = "WorkshopID", Method = OrderMethod.ASC };
                    break;
                case 1://ID降序
                    _orderParam = new OrderParam() { PropertyName = "WorkshopID", Method = OrderMethod.DESC };
                    break;
                case 2://创建时间降序
                    _orderParam = new OrderParam() { PropertyName = "Created_at", Method = OrderMethod.ASC };
                    break;
                case 3://创建时间升序
                    _orderParam = new OrderParam() { PropertyName = "Created_at", Method = OrderMethod.DESC };
                    break;
                case 4://修改时间升序
                    _orderParam = new OrderParam() { PropertyName = "Updated_at", Method = OrderMethod.ASC };
                    break;
                case 5://修改时间降序
                    _orderParam = new OrderParam() { PropertyName = "Updated_at", Method = OrderMethod.DESC };
                    break;
                default://ID降序
                    _orderParam = new OrderParam() { PropertyName = "WorkshopID", Method = OrderMethod.DESC };
                    break;
            }

            pagingWorkshop.Items = Repository.FindPageList(pagingWorkshop.PageSize, pagingWorkshop.PageIndex, out pagingWorkshop.TotalNumber, _where, _orderParam).ToList();
            return pagingWorkshop;
        }
    }
}
